/**
 * @作者 钟先崟
 * @时间 2023-02-19 14:29
 * @说明 925. 长按键入
 * 你的朋友正在使用键盘输入他的名字 name。偶尔，在键入字符 c 时，按键可能会被长按，而字符可能被输入 1 次或多次。
 * 你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字（其中一些字符可能被长按），那么就返回 True。
 * 示例 1：
 * 输入：name = "alex", typed = "aaleex"
 * 输出：true
 * 解释：'alex' 中的 'a' 和 'e' 被长按。
 */
public class Solution {
    public static void main(String[] args) {
//        System.out.println(isLongPressedName("alex", "aaleex"));
        System.out.println(isLongPressedName("saeed", "ssaaedd"));
        System.out.println(isLongPressedName("vtkgn", "vttkgnn"));
        System.out.println(isLongPressedName("a", "aaaaaaaaaaaaaaaaaa"));
        System.out.println(isLongPressedName("pyplrz", "ppyypllr"));
    }

    public static boolean isLongPressedName(String name, String typed) {
        boolean isRight = true;
        for (int i = 0, j = 0; ; ) {
            if (name.length() - i > typed.length() - j) return false;
            if (i < name.length() && name.charAt(i) == typed.charAt(j)) {
                if (i < name.length() - 1) i++;
                if (j < typed.length() - 1) j++;
                else if(i >= name.length() - 1&&j >= typed.length() - 1)break;
            } else {
                if (j >= 1) {
                    if (typed.charAt(j) == typed.charAt(j - 1))
                        j++;
                    else {
                        isRight = false;
                        break;
                    }
                } else {
                    isRight = false;
                    break;
                }
            }

        }
        return isRight;
    }
}
